--- @param extension Package
--- @param HY HY_Utility
--- @param U Utility
return function(extension, HY, U)
    local hy_toutetsu_yuma = General:new(extension, "hy_toutetsu_yuma", "chi_k", 3, 3, General.Female)
    local dig_blood = fk.CreateSkill {
        name = "dig_blood",
    }
    dig_blood:addEffect(fk.TargetConfirming, {
        anim_type = "control",
        can_trigger = function(self, event, target, player, data)
            return player:hasSkill(dig_blood.name) and data.card.name == "peach" and player:usedSkillTimes(dig_blood.name, Player.HistoryRound) == 0 and
                table.contains(data:getAllTargets(), target) and (target == player or target.hp > 0)
        end,
        on_cost = function(self, event, target, player)
            return player.room:askToSkillInvoke(player, {
                skill_name = dig_blood.name,
                prompt = "dig_blood_prompt::" .. target.id
            })
        end,
        on_use = function(self, event, target, player, data)
            local room = player.room
            data:cancelTarget(target)
            room:useCard({
                from = target,
                tos = { target },
                card = Fk:cloneCard("analeptic"),
                extra_data = {
                    analepticRecover = target.hp <= 0,
                },
            })
        end
    })
    local blood_dishes = fk.CreateSkill {
        name = "blood_dishes",
    }
    blood_dishes:addEffect(fk.Damaged, {
        anim_type = "masochism",
        times = function(self, player)
            return 2 - player:getMark("blood_dishes-round")
        end,
        can_trigger = function(self, event, target, player)
            return player:hasSkill(blood_dishes.name) and not target.dead and
                (target == player or (player:getMark("blood_dishes-round") < 2 and #player.room.logic:getEventsOfScope(GameEvent.Damage, 2, function(e)
                    return e.data.to == target
                end, Player.HistoryTurn) == 1)) and not player.dead
        end,
        on_cost = function(self, event, target, player)
            return player.room:askToSkillInvoke(player, {
                skill_name = blood_dishes.name,
                prompt = "blood_dishes_prompt"
            })
        end,
        on_use = function(self, event, target, player)
            local room = player.room
            room:drawCards(player, 2, blood_dishes.name)
            if player ~= target and not player:isKongcheng() then
                local card = room:askToCards(player, {
                    min_num = 1,
                    max_num = 1,
                    skill_name = blood_dishes.name,
                    cancelable = false,
                    prompt = "blood_dishes_prey_prompt::" .. target.id
                })
                if type(card) == "number" then
                    card = { card }
                end
                room:addPlayerMark(player, "blood_dishes-round", 1)
                room:moveCardTo(card, Card.PlayerHand, target, fk.ReasonGive, blood_dishes.name, nil, false, player)
            end
        end,
    })
    local gluttony = fk.CreateSkill {
        name = "gluttony",
    }
    gluttony:addEffect(fk.CardUseFinished, {
        anim_type = "support",
        can_trigger = function(self, event, target, player, data)
            return player:hasSkill(gluttony.name) and data.card.name == "analeptic" and target == player
        end,
        on_cost = Util.TrueFunc,
        on_use = function(self, event, target, player, data)
            if player:isWounded() then
                player.room:recover({
                    who = player,
                    num = 1,
                    card = data.card,
                    skillName = gluttony.name
                })
            end
        end
    })
    extension:loadSkillSkels { dig_blood, blood_dishes, gluttony }
    hy_toutetsu_yuma:addSkills { "dig_blood", "blood_dishes", "gluttony" }
    Fk:loadTranslationTable {
        ["hy_toutetsu_yuma"] = "饕餮尤魔",
        ["#hy_toutetsu_yuma"] = "无尽之欲首",
        ["illustrator:hy_toutetsu_yuma"] = "小森",
        ["designer:hy_toutetsu_yuma"] = "黑曜人形",
        ["cv:hy_toutetsu_yuma"] = "",

        ["dig_blood"] = "采血",
        [":dig_blood"] = "每轮限一次，一名角色成为【桃】的目标时，若其为你或不处于濒死状态，你可以取消此目标并令其视为使用一张无次数限制的【酒】。",
        ["dig_blood_prompt"] = "采血：你可以取消%dest作为【桃】的目标并令其视为使用一张【酒】",

        ["blood_dishes"] = "血肴",
        [":blood_dishes"] = "在你受到伤害后或其他角色本回合首次受到伤害后（每轮至多对其他角色发动两次），你可以摸两张牌。若受伤角色不为你，你交给其一张手牌。",
        ["blood_dishes_prompt"] = "血肴：你可以摸两张牌",
        ["blood_dishes_prey_prompt"] = "血肴：交给%dest一张手牌",

        ["gluttony"] = "暴食",
        [":gluttony"] = "在一张【酒】对你结算完毕后，你回复1点体力。",
    }
end
